package com.caregiver.watch.business.user.utils.id;


import com.caregiver.watch.common.utils.uuid.UUIDUtils;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

import static com.caregiver.watch.common.constant.NumberConstants.SIX;

/**
 * ID生成器工具类
 *
 * @author yinsitech
 */
public class IdUtils {

    private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    /**
     * 获取随机UUID
     *
     * @return 随机UUID
     */
    public static String randomUUID() {
        return UUIDUtils.randomUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线
     *
     * @return 简化的UUID，去掉了横线
     */
    public static String simpleUUID() {
        return UUIDUtils.randomUUID().toString(true);
    }

    /**
     * 获取随机UUID，使用性能更好的ThreadLocalRandom生成UUID
     *
     * @return 随机UUID
     */
    public static String fastUUID() {
        return UUIDUtils.fastUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线，使用性能更好的ThreadLocalRandom生成UUID
     *
     * @return 简化的UUID，去掉了横线
     */
    public static String fastSimpleUUID() {
        return UUIDUtils.fastUUID().toString(true);
    }



    /**
     * 生成6位随机数字和字母组合（使用Stream）
     * @return 6位随机字符串
     */
    public static String generateRandomCode() {
        List<Character> chars = new ArrayList<>();

        // 将字符转换为列表
        for (char c : CHARACTERS.toCharArray()) {
            chars.add(c);
        }
        // 使用Collections.shuffle随机打乱
        Collections.shuffle(chars);
        // 返回前6个字符
        return chars.stream()
                .limit(SIX)
                .collect(StringBuilder::new, StringBuilder::append, StringBuilder::append)
                .toString();
    }
}
